home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
kermit.columbia.edu
/
kermit.columbia.edu.tar
/
kermit.columbia.edu
/
newsgroups
/
misc.19981211-19990422
/
000418_news@watsun.cc.columbia.edu _Mon Mar 29 13:19:14 1999.msg
< prev
next >
Wrap
Internet Message Format
|
1999-04-21
|
4KB
Return-Path: <news@watsun.cc.columbia.edu>
Received: from newsmaster.cc.columbia.edu (newsmaster.cc.columbia.edu [128.59.59.30])
by watsun.cc.columbia.edu (8.8.5/8.8.5) with ESMTP id NAA27829
for <kermit.misc@watsun.cc.columbia.edu>; Mon, 29 Mar 1999 13:19:14 -0500 (EST)
Received: (from news@localhost)
by newsmaster.cc.columbia.edu (8.8.5/8.8.5) id NAA04015
for kermit.misc@watsun.cc.columbia.edu; Mon, 29 Mar 1999 13:05:56 -0500 (EST)
X-Authentication-Warning: newsmaster.cc.columbia.edu: news set sender to <news> using -f
From: dn5006@my-dejanews.com
Subject: Inheritance in Kermit 95
Date: Mon, 29 Mar 1999 15:57:20 GMT
Organization: Deja News - The Leader in Internet Discussion
Message-ID: <7do7sr$bm9$1@nnrp1.dejanews.com>
To: kermit.misc@watsun.cc.columbia.edu
; NO OBJECT-ORIENTED PROGRAMMING LEAVES HOME WITHOUT INHERITANCE.
; THE FOLLOWING SCRIPT DISPLAYS INHERITANCE IN KERMIT 95.
;
; CLASS PERSON IS THE BASE CLASS.
;
; CLASS EMPLOYEE DERIVES FROM CLASS PERSON. CLASS EMPLOYEE HAS
; ALL ATTRIBUTES AND BEHAVIOR OF CLASS PERSON AND SOME EXTRAS
;
; CLASS MANAGER DERIVES FROM CLASS EMPLOYEE. CLASS MANAGER HAS
; ALL ATTRIBUTES AND BEHAVIOR OF CLASS EMPLOYEE AND SOME EXTRAS
;
; THE KEY OF OBJECT-ORIENTED PROGRAMMING IN KERMIT 95 IS
; THE PROPER USAGE OF:
;
; ASSIGN
; _ASSIGN
; DEFINE
; _DEFINE
;
; ASSIGN EXPANDS ONLY R-VALUE VARIABLE.
; _ASSIGN EXPANDS BOTH L-VALUE AND R-VALUE VARIABLES.
; DEFINE EXPANDS NEITHER L-VALUE NOR _R-VALUE VARIABLES.
; _DEFINE EXPANDS ONLY L-VALUE VARIABLE.
define person {
local self
assign self \%1
_assign \m(self).age \%2
_assign \m(self).job \%3
_assign \m(self).introduce {
echo My name is \fcap(\%1)
echo I am \\m(\m(self).age) years old
echo I am a(n) \\m(\m(self).job)
}
_assign \m(self).destroy {
_define \m(self).age
_define \m(self).job
_define \m(self).introduce
_define \m(self).destroy
}
}
define employee {
local self super \%s
assign self \%1
assign super person ; DERIVES FROM PERSON
\m(super) {\%1} {\%2} {\%3} ; CREATE BASE COMPONENTS
assign \%s \m(self).introduce ; SAVE SUPER CLASS METHOD
; introduce
_assign \m(self).introduce { ; OVERLOAD METHOD introduce
\m(\%s) ; EXEC SUPER CLASS METHOD FIRST
echo I work for \%4 ; AND THIS EXTRA
}
}
define manager {
local self super \%s
assign self \%1
assign super employee ; DERIVES FROM EMPLOYEE
\m(super) {\%1} {\%2} {\%3} {\%4} ; CREATE BASE COMPONENTS
assign \%s \m(self).introduce ; SAVE SUPER CALSS METHOD
; introduce
_assign \m(self).introduce { ; OVERLOAD METHOD introduce
\m(\%s) ; EXEC SUPER CLASS METHOD FIRST
echo I am a manager ; AND THIS EXTRA
}
_define \m(self).fire { ; ADD THE NEW METHOD fire
echo {\%1, you are fired}
}
_define \m(self).offer { ; ADD THE NEW METHOD hire
echo {\%1, I would like to offer you \%2}
}
}
; JANE IS A 27 YEARS YOUNG STUDENT
person Jane 27 student
Jane.introduce
echo
; MARK IS A 36 YEARS OLD PROGRAMMER WORKING FOR BT&T
employee Mark 36 programmer BT&T
Mark.introduce
echo
; MARIO IS A 24 YEARS OLD PROGRAMMERS WORKING FOR METAS
employee Mario 24 programmer METAS
Mario.introduce
echo
; BOB IS A 47 YEARS OLD ENGINEER WORKING FOR METAS AS A MANAGER
manager Bob 47 Engineer METAS
Bob.introduce
echo
; MARIO KNOWS NO DIFFERENCE BETWEEN DEFINE AND _DEFINE.
; Bob DECIDES TO FIRE HIM:
Bob.fire Mario
echo
; MARK KNOWS THE DIFFERENCE BETWEEN ASSIGN AND _ASSIGN.
; Bob DECIDES TO MAKE HIM AN OFFER:
Bob.offer Mark 100K
echo
Dat Nguyen
Airline Telecommunications and Information Services
770 Sherbrooke West
Montreal, Quebec
Canada H3A 1G1
Email dat.nguyen&sita.int
-----------== Posted via Deja News, The Discussion Network ==----------
http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own